package com.hqq.exercise.cal;

/**
 * TurnOnLight 开灯问题
 * 问题描述:
 * 有n盏灯,编号1-n.第1个人把所有的灯打开,第2个人按下所有编号为2的倍数的开关,第3个人关掉3的倍数的开关 依次类推
 * 一共k个人 问最后哪些灯开着
 * 输入:n和k
 * 输出:开着的灯的灯编号 k<=n<=1000
 * 样例输入:7 3
 * 样例输出:1 5 6 7
 * Created by heqianqian on 2017/8/8.
 */
public class TurnOnLight {

    /**
     * 输出开着的灯编号[从1开始]
     *
     * @param n 灯的总数
     * @param k 人的总数
     */
    public static void calTurnOnLight(int n, int k) {
        int[] lights = new int[n];
        for (int i = 0; i < n; i++) {//初始化灯的编号
            lights[i] = (i + 1);
        }
        for (int i = 1; i <= k; i++) {//遍历人
            for (int j = 0; j < n; j++) {//遍历灯
                if (lights[i] % (i + 1) == 0) {//如果灯的编号是人的编号的倍数
                    lights[i] = -1;
                }
            }
        }
        for (int i = 0; i < n; i++) {
            if (lights[i] != -1) {
                System.out.print(lights[i] + " ");
            }
        }
    }
}


